#ifndef GETNOTICECOMMAND_H
#define GETNOTICECOMMAND_H

#include "base_command.h"
#include <QString>
#include <QNetworkReply>
#include <QJsonObject>
#include <QVariantList>

// GetNoticeCommand 命令类
// 负责获取通知消息
class GetNoticeCommand : public BaseCommand
{
    Q_OBJECT

public:
    explicit GetNoticeCommand(QObject *parent = nullptr);
    ~GetNoticeCommand();
    
    // 设置 QNetworkAccessManager 实例（重写基类方法以连接信号）
    void setNetworkAccessManager(QNetworkAccessManager *networkManager);
    
    // 执行命令
    // 参数：readStatus - 读取状态（-1表示全部），type - 类型，currpage - 当前页，rowcount - 每页数量
    // 返回：是否成功发起请求（异步操作，实际结果通过信号通知）
    bool execute(int readStatus = -1, int type = 0, int currpage = 1, int rowcount = 30);

signals:
    // 获取通知完成信号
    void getNoticeCompleted(int resultCode, const QString &message, const QVariantList &notices);

private slots:
    // 处理获取通知响应
    void handleGetNoticeResponse(QNetworkReply *reply);

private:
    // 解析获取通知响应
    void parseGetNoticeResponse(const QJsonObject &response);
    
    // 构建查询参数
    QString buildQueryParams(int readStatus, int type, int currpage, int rowcount);
    
    // 构建请求 URL
    QString buildRequestUrl(const QString &baseUrl);
};

#endif // GETNOTICECOMMAND_H

